import request from '@/config/axios'

// 员工上下班考勤明细 VO
export interface AttendanceDetailVO {
  id: number // 序号
  userId: number // 员工id
  userCode: string // 员工工号
  userName: string // 员工姓名
  deptId: number // 部门ID
  deptName: string // 部门名称
  attendanceDate: string | Date // 考勤日期
  checkInTime: string | Date // 实际上班打卡时间
  standardCheckInTime: string // 标准上班时间
  checkInStatus: number // 上班打卡状态(0-正常,1-迟到,2-未打卡,3-外勤打卡)
  checkInLocation: string // 上班打卡地点
  checkInDevice: string // 上班打卡设备
  checkOutTime: string | Date // 实际下班打卡时间
  standardCheckOutTime: string // 标准下班时间
  checkOutStatus: number // 下班打卡状态(0-正常,1-早退,2-未打卡,3-外勤打卡)
  checkOutLocation: string // 下班打卡地点
  checkOutDevice: string // 下班打卡设备
  workHours: number // 实际工作时长(小时)
  overtimeHours: number // 加班时长(小时)
  lateMinutes: number // 迟到分钟数
  leaveEarlyMinutes: number // 早退分钟数
  isBusinessTrip: number // 是否出差 0.否 1.是
  leaveType: number // 请假类型(0-无,1-年假,2-病假,3-事假,4-调休)
  leaveHours: number // 请假时长(小时)
}


export interface AttendanceDetailSummarizeVO {
  id: number // 序号
  userId: number // 员工id
  userCode: string // 员工工号
  userName: string // 员工姓名
  deptId: number // 部门ID
  deptName: string // 部门名称
  attendanceDate: Date // 考勤日期
  detailList: any,
}

// 员工上下班考勤明细 API
export const AttendanceDetailApi = {
  // 查询员工上下班考勤明细分页
  getAttendanceDetailPage: async (params: any) => {
    return await request.get({ url: `/oa/attendance-detail/page`, params })
  },

  // 查询员工上下班考勤明细分页
  getAttendanceDetailSummarize: async (params: any) => {
    return await request.get({ url: `/oa/attendance-detail/summarize`, params })
  },

  // 查询员工上下班考勤明细详情
  getAttendanceDetail: async (id: number) => {
    return await request.get({ url: `/oa/attendance-detail/get?id=` + id })
  },

  // 新增员工上下班考勤明细
  createAttendanceDetail: async (data: AttendanceDetailVO) => {
    return await request.post({ url: `/oa/attendance-detail/create`, data })
  },

  // 新增员工上下班考勤明细
  checkAttendance: async (type: number) => {
    return await request.get({ url: `/oa/attendance-detail/check?type=` + type  })
  },

  // 修改员工上下班考勤明细
  updateAttendanceDetail: async (data: AttendanceDetailVO) => {
    return await request.put({ url: `/oa/attendance-detail/update`, data })
  },

  // 删除员工上下班考勤明细
  deleteAttendanceDetail: async (id: number) => {
    return await request.delete({ url: `/oa/attendance-detail/delete?id=` + id })
  },

  // 导出员工上下班考勤明细 Excel
  exportAttendanceDetail: async (params) => {
    return await request.download({ url: `/oa/attendance-detail/export-excel`, params })
  },

  // 查询个人考勤日历
  getAttendanceCalendar: async (params: { userId: number, month: string }) => {
    return await request.get({ url: '/oa/attendance-detail/calendar', params })
  },

  // 分页获取所有员工考勤月报表
  getAttendanceCalendarPage: async (params: any) => {
    return await request.get({ url: `/oa/attendance-detail/calendar-page`, params })
  },

  // 导出所有员工考勤月报表 Excel
  exportAttendanceCalendar: async (params: any) => {
    return await request.download({ url: `/oa/attendance-detail/calendar-export-excel`, params })
  },


  // 分页获取所有员工考勤月报表
  getDeptAttendanceCalendarPage: async (params: any) => {
    return await request.get({ url: `/oa/attendance-detail/dept-calendar-page`, params })
  },

  // 导出所有员工考勤月报表 Excel
  exportDeptAttendanceCalendar: async (params: any) => {
    return await request.download({ url: `/oa/attendance-detail/dept-calendar-export-excel`, params })
  }
  
}